Rust 错误处理
阐述
Rust 用一个枚举类型来表示可能出错的结果:
enum Result<T, E> {
Ok(T),
Err(E),
}
可以用以下的方式来处理这个值:
- 模式匹配:可以分别匹配数据和错误,也可以匹配错误的不同类型
- 通过
unwrap
或者expect
来抛出 panic - 通过
?
来传播错误,使得函数的返回值也变成Result<T, E>
,还能自动提升类型
实例
use std::fs::File;
use std::io;
use std::io::Read;
fn read_username_from_file() -> Result<String, io::Error> {
let mut s = String::new();
File::open("hello.txt")?.read_to_string(&mut s)?;
Ok(s)
}